const { app, BrowserWindow } = require("electron");
const path = require("path");
const isProduction = process.env.NODE_ENV === "production";
//   !process.defaultApp && !path.resolve(__dirname).includes("node_modules");
// 保持对window对象的全局引用，如果不这样做的话，当JavaScript对象被
// 垃圾回收的时候，window对象将会自动的关闭
let mainWindow;

function createWindow() {
  // 创建浏览器窗口
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 750,
    transparent: true,
    // frame: false,
    // alwaysOnTop: true,
    x: 50,
    y: 50,
    // frame: false,// 关闭顶部工具栏， 无边框
    autoHideMenuBar: true, // 隐藏菜单栏
    webPreferences: {
      nodeIntegration: true, // 允许在渲染进程中使用Node.js API
      // contextIsolation: false, // 禁用上下文隔离
      contentSecurityPolicy: "script-src 'self'; object-src 'self'",
      preload: path.join(__dirname, "preload.js"),
    },
  });
  // 根据开发环境或生产环境加载不同的URL
  if (!isProduction) {
    // 开发环境下，加载Vite开发服务器
    mainWindow.loadURL("http://localhost:5173");
  } else {
    // 生产环境下，加载构建后的文件
    mainWindow.loadFile(path.join(__dirname, "dist", "index.html"));
  }

  // 当window被关闭时，触发下面的事件
  mainWindow.on("closed", function () {
    // 取消引用 window 对象，如果你的应用支持多窗口的话，
    // 通常会把多个 window 对象存放在一个数组里面，
    // 与此同时，你应该删除相应的元素。
    mainWindow = null;
    app.quit();
  });

  // 添加错误处理
  mainWindow.webContents.on(
    "did-fail-load",
    (event, errorCode, errorDescription) => {
      console.error("The page failed to load:", errorCode, errorDescription);
      // 可以尝试重新加载或显示错误页面
      mainWindow.loadFile(path.join(__dirname, "error.html"));
    }
  );

  // 添加日志
  console.log("Apply the startup path:", app.getAppPath());
  console.log("HTML File Path:", path.join(__dirname, "dist", "index.html"));

  // 在开发环境下打开开发者工具
  if (!isProduction) {
    mainWindow.webContents.openDevTools();
  }
  // // 主进程监听渲染进程发送的消息
  // ipcMain.on("message", (data) => {
  //   console.log("Main Event: ", data); // prints "ping"
  // });
  // // 主进程发送消息给渲染进程
  // ipcMain.emit("message", "ping");
}

// 当Electron完成初始化并准备创建浏览器窗口时调用此方法
app.whenReady().then(() => {
  createWindow();
});

// 当所有窗口都被关闭后退出应用
app.on("window-all-closed", function () {
  // 在macOS上，除非用户用Cmd + Q确定地退出，
  // 否则绝大部分应用及其菜单栏会保持激活。
  if (process.platform !== "darwin") app.quit();
});

app.on("activate", function () {
  // 在macOS上，当单击dock图标并且没有其他窗口打开时，
  // 通常在应用程序中重新创建一个窗口。
  if (mainWindow === null) createWindow();
});
